/*
* 
* Fichier source projet intel Acceler8 sous license GNU GPL v3.
* Voir http://www.gnu.org/copyleft/gpl.html pour plus d'informations
* La license est egalement disponible dans le repertoire /doc
* 
* Cree le : mardi 08 novembre 2011 à 17 : 41.
* Auteurs : Axel MOINET et Arnaud DURAND.
* 
* Nom de fichier : main.cpp
* Chemin du fichier : src/main.cpp
* 
* Description : Fichier principal du projet.
* 
*/

#include "classes/threadprincipal/threadprincipal.h"
#include "functions/mainthreadfunctions.h"
#include <pthread.h>
#include <sstream>
#include <string>

int main(int nbArgs, char **Args) {

	std::string nbCoeurs(Args[1]);
	std::istringstream *fluxChaine = new std::istringstream(nbCoeurs);
	int nbThreads;

	*fluxChaine >> nbThreads;

	delete fluxChaine;

	int nbThreadsLecture = (nbThreads / 3) * 2;
	int nbThreadsCalcul = (nbThreads / 3);

	threadPrincipal *thread;

	unsigned long idThreadLecture;
	unsigned long idThreadCalcul;

	for(int i = 2; i < nbArgs; i++) {

		thread = new threadPrincipal(nbThreadsLecture, nbThreadsCalcul, Args[i]);

		int nbThreadsTasks = 20;
		int nbThreadsPipeline = 20;

		pthread_create(&idThreadLecture, NULL, &createReadThread, thread);
		pthread_create(&idThreadCalcul, NULL, &createComputeThread, thread);

		pthread_join(idThreadLecture, NULL);
		pthread_join(idThreadCalcul, NULL);

		printFinalResults(thread->getStructureResult());

		delete thread;
	}

	return 0;
}
